Skip to content

ZeroTier 异地组网

INFO

与 Tailscale 类似,ZeroTier 可以将不同网络环境的设备组成一个虚拟局域网,使其可以互相访问

安装步骤

  1. 打开 ZeroTier 官网,点击右上角的 Login,可以直接选择 Google 或者 Microsoft 授权登录

  2. 根据提示下载对应平台的 客户端

    • Android (国区 Google Play 无法直接下载,可以在 APKMirror 下载)
    • Linux 一键安装脚本 curl -s https://install.zerotier.com | sudo bash
    • 卸载dpkg -P zerotier-one rm -rf /var/lib/zerotier-one/
  3. 登录成功后,点击最上方的 Create A Network 创建一个网络

  4. 创建成功,进入该网络的设置,将 Access Control 设置为 Private,name 可以随意填写,同时记下 Network ID

    zerotier1

  5. 下面来到网段的设置,没有特殊需求的话,在下方任意选择一个即可

    zerotier2

  6. 如果需要自定义的话则需要点击 Advanced 后,将其中自带的网段进行删除,然后在上方填写想要的网段,下方填写地址池 (类似 DHCP 地址池)

    zerotier3

  7. 有图形化界面的平台,直接填入刚刚记下的 Network ID 即可;而在无图形化界面的平台上,需要输入 zerotier-cli join <Network ID>

  8. 返回到 ZeroTier 控制面板,在下方设备列表中,勾选加入网络的设备;同时记下设备的 IP

    zerotier4

  9. 完成以上步骤后,启动客户端,即使用列表中的 IP 进行直接访问

局域网访问

有些时候,我们不单单希望加入 Tailscale 的设备可以相互访问,而是需要访问设备所在的整个局域网,对此我们还需要更多的配置。

开启 IP 转发

  1. 编辑 /etc/sysctl.conf 文件

    bash
    vi /etc/sysctl.conf
  2. 将以下代码取消注释

    ini
    net.ipv4.ip_forward=1
    net.ipv6.conf.all.forwarding=1
  3. 加载内核参数

    bash
    sysctl -p

配置 ZeroTier 路由规则

  • 例如我的路由器地址为 10.0.0.1,光猫地址为 192.168.1.1,则需要配置的网段为 10.0.0.0/24 与 192.168.1.0/24

  • 在 ZeroTier 控制面板中,Destination 填写网段,Via 填写内网跳板机的 IP 地址

    zerotier5

配置跳板机路由

  1. 输入 ifconfig ,记录下物理网卡名字以及 ZeroTier 网卡名字

  2. 将网卡名字导出为环境变量

    bash
    PHY_IFACE=连接内网的网卡的名字
    ZT_IFACE=zerotier 的虚拟网卡名字
  3. 更新路由表

    bash
    sudo iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE
    sudo iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
    sudo iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT
    sudo iptables-save
  4. 持久化路由表

    bash
    sudo mkdir -p /etc/sysconfig/
    sudo sh -c "iptables-save > /etc/sysconfig/iptables"
  5. /etc/rc.local 文件的末尾添加一行

    plain
    /sbin/iptables-restore < /etc/sysconfig/iptables

经过以上设置,即可在连接 ZeroTier 后,直接使用局域网 IP 对整个局域网的设备进行访问

参考资料